package sort.test3_31;


import java.util.Arrays;

public class CountSort {

    //  CKG TODO 2023/3/31:   第一步：　找到待排序数组的最大数值和最小数值　
    //   　　　　　　　　　　　第二步：确定桶的个数   第三步：将数组中的每个元素数值的个数按照元素数值大小放到对应序号的桶中
//    第四步：　将元素的数值累加　统计每个序号的桶的位置前面有多少个元素数值
//    第五步：对原始数组进行排序

    public  void  sort(int[] nums){
        if (nums.length==0){
            return;
        }
//        int min=Integer.MAX_VALUE;
        int max=Integer.MIN_VALUE;

        for (int i = 0; i < nums.length; i++) {
//            min=Math.min(min,nums[i]);
            max=Math.max(max,nums[i]);
        }

        int[] countArray=new int[max+1];
        for (int i = 0; i < nums.length; i++) {
            countArray[nums[i]]++;
        }
        for (int i = 1; i < countArray.length; i++) {
            countArray[i]+=countArray[i-1];
        }
        int[] result=Arrays.copyOf(nums,nums.length);

        for (int i = 0; i < nums.length; i++) {
            nums[--countArray[result[i]]]=result[i];

        }



    }
    public static void main(String[] args) {
        CountSort countSort = new CountSort();
        int arr[] = {10,5,11,6};
        countSort.sort(arr);
        System.out.println(Arrays.toString(arr));
    }


}
